As the storage density of NAND flash memories used for solid state drives (SSDs) and memory cards is increased, reliability becomes a problem. Factors that influence reliability include factors such as the charge amount stored in a memory cell, variation in charges due to interference with the surrounding memory cells, charge migration accompanying reading, and a change over time in the charge amount.
A technique has been proposed to reduce read errors caused by fluctuations in the charge amount by injecting charges into a charge storage layer by applying a voltage.
However, in the related art, individual differences in the extent or degree of charge migration for each memory cell are not taken into consideration, and therefore a write level for each particular memory cell may not be estimated with higher accuracy.